# Copyright (c) 2015, Google Inc.
#
# Permission to use, copy, modify, and/or distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
# copyright notice and this permission notice appear in all copies.
#
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
# SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
# OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
# CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

vars = {
  'chromium_git': 'https://chromium.googlesource.com',

  'checkout_clang': False,
  'checkout_fuzzer': False,
  'checkout_sde': False,
  'checkout_nasm': False,
  'checkout_libcxx': False,
  'vs_version': '2019',

  # Run the following command to see the latest builds in CIPD:
  #  cipd describe PACKAGE_NAME -version latest

  # infra/3pp/tools/cmake/linux-amd64
  'cmake_version': 'version:2@3.28.4.chromium.8',
  # infra/3pp/tools/go/linux-amd64
  'go_version': 'version:2@1.22.1',
  # infra/3pp/tools/perl/windows-amd64
  'perl_version': 'version:2@5.32.1.1',

  # Update the following from
  # https://chromium.googlesource.com/chromium/src/+/main/DEPS
  'android_sdk_platform-tools_version': 'HWVsGs2HCKgSVv41FsOcsfJbNcB0UFiNrF6Tc4yRArYC',
  'libfuzzer_revision': '758bd21f103a501b362b1ca46fa8fcb692eaa303',
  'libcxx_revision': '80307e66e74bae927fb8709a549859e777e3bf0b',
  'libcxxabi_revision': 'ec88f0ab262c5f2426dbf138b92ee9ae5961e431',
  'ninja_version': 'version:2@1.11.1.chromium.6',

  # The Android NDK cannot be updated until https://crbug.com/boringssl/454 is fixed.
  # We rely on an older NDK to test building without NEON instructions as the baseline.
  'android_ndk_revision': 'U0e8L6l52ySjBrUBB82Vdyhsg60vVMqH0ItTW3TRHAQC',
}

deps = {
  'boringssl/util/bot/android_ndk': {
    'packages': [{
      'package': 'infra/3pp/tools/android_ndk/linux-amd64',
      'version': Var('android_ndk_revision'),
    }],
    'condition': 'checkout_android',
    'dep_type': 'cipd',
  },

  'boringssl/util/bot/android_sdk/public': {
    'packages': [{
      'package': 'chromium/third_party/android_sdk/public/platform-tools',
      'version': Var('android_sdk_platform-tools_version'),
    }],
    'condition': 'checkout_android',
    'dep_type': 'cipd',
  },

  'boringssl/util/bot/cmake': {
    'packages': [{
      'package': 'infra/3pp/tools/cmake/${{platform}}',
      'version': Var('cmake_version'),
    }],
    'dep_type': 'cipd',
  },

  'boringssl/util/bot/golang': {
    'packages': [{
      'package': 'infra/3pp/tools/go/${{platform}}',
      'version': Var('go_version'),
    }],
    'dep_type': 'cipd',
  },

  'boringssl/util/bot/perl-win32': {
    'packages': [{
      'package': 'infra/3pp/tools/perl/${{platform}}',
      'version': Var('perl_version'),
    }],
    'condition': 'host_os == "win"',
    'dep_type': 'cipd',
  },

  'boringssl/util/bot/libFuzzer': {
    'url': Var('chromium_git') + '/external/github.com/llvm/llvm-project/compiler-rt/lib/fuzzer.git' +'@' + Var('libfuzzer_revision'),
    'condition': 'checkout_fuzzer',
  },

  'boringssl/util/bot/libcxx': {
    'url': Var('chromium_git') + '/external/github.com/llvm/llvm-project/libcxx.git' + '@' + Var('libcxx_revision'),
    'condition': 'checkout_libcxx',
  },
  'boringssl/util/bot/libcxxabi': {
    'url': Var('chromium_git') + '/external/github.com/llvm/llvm-project/libcxxabi.git' + '@' + Var('libcxxabi_revision'),
    'condition': 'checkout_libcxx',
  },

  'boringssl/util/bot/ninja': {
    'packages': [{
      'package': 'infra/3pp/tools/ninja/${{platform}}',
      'version': Var('ninja_version'),
    }],
    'dep_type': 'cipd',
  }
}

recursedeps = [
  # android_tools pulls in the NDK from a separate repository.
  'boringssl/util/bot/android_tools',
]

hooks = [
  {
    'name': 'nasm_win32',
    'pattern': '.',
    'condition': 'host_os == "win" and checkout_nasm',
    'action': [ 'download_from_google_storage',
                '--no_resume',
                '--platform=win32',
                '--no_auth',
                '--bucket', 'chromium-tools',
                '-s', 'boringssl/util/bot/nasm-win32.exe.sha1',
    ],
  },
  {
    'name': 'win_toolchain',
    'pattern': '.',
    'condition': 'host_os == "win"',
    'action': [ 'python3',
                'boringssl/util/bot/vs_toolchain.py',
                'update',
                Var('vs_version'),
    ],
  },
  {
    'name': 'clang',
    'pattern': '.',
    'condition': 'checkout_clang',
    'action': [ 'python3',
                'boringssl/util/bot/update_clang.py',
    ],
  },
  {
    'name': 'sde_linux64',
    'pattern': '.',
    'condition': 'checkout_sde and host_os == "linux"',
    'action': [ 'download_from_google_storage',
                '--no_resume',
                '--bucket', 'chrome-boringssl-sde',
                '-s', 'boringssl/util/bot/sde-linux64.tar.xz.sha1'
    ],
  },
  {
    'name': 'sde_linux64_extract',
    'pattern': '.',
    'condition': 'checkout_sde and host_os == "linux"',
    'action': [ 'python3',
                'boringssl/util/bot/extract.py',
                'boringssl/util/bot/sde-linux64.tar.xz',
                'boringssl/util/bot/sde-linux64/',
    ],
  },
  {
    'name': 'sde_win32',
    'pattern': '.',
    'condition': 'checkout_sde and host_os == "win"',
    'action': [ 'download_from_google_storage',
                '--no_resume',
                '--bucket', 'chrome-boringssl-sde',
                '-s', 'boringssl/util/bot/sde-win32.tar.xz.sha1'
    ],
  },
  {
    'name': 'sde_win32_extract',
    'pattern': '.',
    'condition': 'checkout_sde and host_os == "win"',
    'action': [ 'python3',
                'boringssl/util/bot/extract.py',
                'boringssl/util/bot/sde-win32.tar.xz',
                'boringssl/util/bot/sde-win32/',
    ],
  },
]
